/*
 * Auto generated C++ header for Mass Effect 2.
 *	by _silencer.
 */

#ifndef UNREAL_SDK_GAME_IpDrv_H
#define UNREAL_SDK_GAME_IpDrv_H

#include "unreal_game_global.h"

namespace game
{
	using namespace unreal;

	class HTTPDownload: public Download
	{
		DECLARE_PACKAGE_CLASS( HTTPDownload, Download, IpDrv )

	public:

		Float ConnectionTimeout; //offset = 2692, size = 4
		Bool MaxRedirection: 1; //offset = 2688, size = 4
		Bool UseCompression: 1; //offset = 84, size = 4
		String RedirectToURL; //offset = 72, size = 12
		Int ProxyServerPort; //offset = 2684, size = 4
		String ProxyServerHost; //offset = 2672, size = 12
	};

	class OnlineSubsystemCommonImpl: public OnlineSubsystem
	{
		DECLARE_PACKAGE_CLASS( OnlineSubsystemCommonImpl, OnlineSubsystem, IpDrv )

	public:

		Pointer VoiceEngine; //offset = 136, size = 4
		Int MaxLocalTalkers; //offset = 140, size = 4
		Int MaxRemoteTalkers; //offset = 144, size = 4
		Bool bIsUsingSpeechRecognition: 1; //offset = 148, size = 4
		OnlineGameInterfaceImpl* GameInterfaceImpl; //offset = 152, size = 4

		UniqueNetId GetPlayerUniqueNetIdFromIndex( Int UserIndex );
		String GetPlayerNicknameFromIndex( Int UserIndex );
	};

	class OnlineGameInterfaceImpl: public Object
	{
		DECLARE_PACKAGE_CLASS( OnlineGameInterfaceImpl, Object, IpDrv )

	public:

		OnlineSubsystemCommonImpl* OwningSubsystem; //offset = 60, size = 4
		OnlineGameSettings* GameSettings; //offset = 64, size = 4
		OnlineGameSearch* GameSearch; //offset = 68, size = 4
		Byte CurrentGameState; //offset = 72, size = 1
		Byte LanBeaconState; //offset = 73, size = 1
		Byte LanNonce[8]; //offset = 74, size = 1
		Array<CreateOnlineGameCompleteDelegates> CreateOnlineGameCompleteDelegates; //offset = 84, size = 12
		Array<DestroyOnlineGameCompleteDelegates> DestroyOnlineGameCompleteDelegates; //offset = 96, size = 12
		Array<JoinOnlineGameCompleteDelegates> JoinOnlineGameCompleteDelegates; //offset = 108, size = 12
		Array<StartOnlineGameCompleteDelegates> StartOnlineGameCompleteDelegates; //offset = 120, size = 12
		Array<EndOnlineGameCompleteDelegates> EndOnlineGameCompleteDelegates; //offset = 132, size = 12
		Array<FindOnlineGamesCompleteDelegates> FindOnlineGamesCompleteDelegates; //offset = 144, size = 12
		Array<CancelFindOnlineGamesCompleteDelegates> CancelFindOnlineGamesCompleteDelegates; //offset = 156, size = 12
		Int LanAnnouncePort; //offset = 168, size = 4
		Int LanGameUniqueId; //offset = 172, size = 4
		Int LanPacketPlatformMask; //offset = 176, size = 4
		Float LanQueryTimeLeft; //offset = 180, size = 4
		Float LanQueryTimeout; //offset = 184, size = 4
		Pointer LanBeacon; //offset = 188, size = 4
		Pointer SessionInfo; //offset = 192, size = 4
		__OnFindOnlineGamesComplete__Delegate __OnFindOnlineGamesComplete__Delegate; //offset = 196, size = 12
		__OnCreateOnlineGameComplete__Delegate __OnCreateOnlineGameComplete__Delegate; //offset = 208, size = 12
		__OnDestroyOnlineGameComplete__Delegate __OnDestroyOnlineGameComplete__Delegate; //offset = 220, size = 12
		__OnCancelFindOnlineGamesComplete__Delegate __OnCancelFindOnlineGamesComplete__Delegate; //offset = 232, size = 12
		__OnJoinOnlineGameComplete__Delegate __OnJoinOnlineGameComplete__Delegate; //offset = 244, size = 12
		__OnRegisterPlayerComplete__Delegate __OnRegisterPlayerComplete__Delegate; //offset = 256, size = 12
		__OnUnregisterPlayerComplete__Delegate __OnUnregisterPlayerComplete__Delegate; //offset = 268, size = 12
		__OnStartOnlineGameComplete__Delegate __OnStartOnlineGameComplete__Delegate; //offset = 280, size = 12
		__OnEndOnlineGameComplete__Delegate __OnEndOnlineGameComplete__Delegate; //offset = 292, size = 12
		__OnArbitrationRegistrationComplete__Delegate __OnArbitrationRegistrationComplete__Delegate; //offset = 304, size = 12
		__OnGameInviteAccepted__Delegate __OnGameInviteAccepted__Delegate; //offset = 316, size = 12

		Bool RecalculateSkillRating( Array<UniqueNetId> Players );
		Bool AcceptGameInvite( Byte LocalUserNum );
		void OnGameInviteAccepted( OnlineGameSettings* GameInviteSettings );
		void ClearGameInviteAcceptedDelegate( Byte LocalUserNum, GameInviteAcceptedDelegate GameInviteAcceptedDelegate );
		void AddGameInviteAcceptedDelegate( Byte LocalUserNum, GameInviteAcceptedDelegate GameInviteAcceptedDelegate );
		Array<OnlineArbitrationRegistrant> GetArbitratedPlayers();
		void ClearArbitrationRegistrationCompleteDelegate( ArbitrationRegistrationCompleteDelegate ArbitrationRegistrationCompleteDelegate );
		void AddArbitrationRegistrationCompleteDelegate( ArbitrationRegistrationCompleteDelegate ArbitrationRegistrationCompleteDelegate );
		void OnArbitrationRegistrationComplete( Bool bWasSuccessful );
		Bool RegisterForArbitration();
		void ClearEndOnlineGameCompleteDelegate( EndOnlineGameCompleteDelegate EndOnlineGameCompleteDelegate, Int RemoveIndex );
		void AddEndOnlineGameCompleteDelegate( EndOnlineGameCompleteDelegate EndOnlineGameCompleteDelegate );
		void OnEndOnlineGameComplete( Bool bWasSuccessful );
		Bool EndOnlineGame();
		void ClearStartOnlineGameCompleteDelegate( StartOnlineGameCompleteDelegate StartOnlineGameCompleteDelegate, Int RemoveIndex );
		void AddStartOnlineGameCompleteDelegate( StartOnlineGameCompleteDelegate StartOnlineGameCompleteDelegate );
		void OnStartOnlineGameComplete( Bool bWasSuccessful );
		Bool StartOnlineGame();
		void ClearUnregisterPlayerCompleteDelegate( UnregisterPlayerCompleteDelegate UnregisterPlayerCompleteDelegate );
		void AddUnregisterPlayerCompleteDelegate( UnregisterPlayerCompleteDelegate UnregisterPlayerCompleteDelegate );
		void OnUnregisterPlayerComplete( Bool bWasSuccessful );
		Bool UnregisterPlayer( UniqueNetId PlayerID );
		void ClearRegisterPlayerCompleteDelegate( RegisterPlayerCompleteDelegate RegisterPlayerCompleteDelegate );
		void AddRegisterPlayerCompleteDelegate( RegisterPlayerCompleteDelegate RegisterPlayerCompleteDelegate );
		void OnRegisterPlayerComplete( Bool bWasSuccessful );
		Bool RegisterPlayer( UniqueNetId PlayerID, Bool bWasInvited );
		Bool GetResolvedConnectString( String ConnectInfo );
		void ClearJoinOnlineGameCompleteDelegate( JoinOnlineGameCompleteDelegate JoinOnlineGameCompleteDelegate, Int RemoveIndex );
		void AddJoinOnlineGameCompleteDelegate( JoinOnlineGameCompleteDelegate JoinOnlineGameCompleteDelegate );
		void OnJoinOnlineGameComplete( Bool bWasSuccessful );
		Bool JoinOnlineGame( Byte PlayerNum, OnlineGameSearchResult DesiredGame );
		Bool FreeSearchResults( OnlineGameSearch* Search );
		void ClearCancelFindOnlineGamesCompleteDelegate( CancelFindOnlineGamesCompleteDelegate CancelFindOnlineGamesCompleteDelegate, Int RemoveIndex );
		void AddCancelFindOnlineGamesCompleteDelegate( CancelFindOnlineGamesCompleteDelegate CancelFindOnlineGamesCompleteDelegate );
		void OnCancelFindOnlineGamesComplete( Bool bWasSuccessful );
		Bool CancelFindOnlineGames();
		void ClearFindOnlineGamesCompleteDelegate( FindOnlineGamesCompleteDelegate FindOnlineGamesCompleteDelegate, Int RemoveIndex );
		void AddFindOnlineGamesCompleteDelegate( FindOnlineGamesCompleteDelegate FindOnlineGamesCompleteDelegate );
		Bool FindOnlineGames( Byte SearchingPlayerNum, OnlineGameSearch* SearchSettings );
		void ClearDestroyOnlineGameCompleteDelegate( DestroyOnlineGameCompleteDelegate DestroyOnlineGameCompleteDelegate, Int RemoveIndex );
		void AddDestroyOnlineGameCompleteDelegate( DestroyOnlineGameCompleteDelegate DestroyOnlineGameCompleteDelegate );
		void OnDestroyOnlineGameComplete( Bool bWasSuccessful );
		Bool DestroyOnlineGame();
		Bool UpdateOnlineGame( OnlineGameSettings* UpdatedGameSettings );
		void ClearCreateOnlineGameCompleteDelegate( CreateOnlineGameCompleteDelegate CreateOnlineGameCompleteDelegate, Int RemoveIndex );
		void AddCreateOnlineGameCompleteDelegate( CreateOnlineGameCompleteDelegate CreateOnlineGameCompleteDelegate );
		void OnCreateOnlineGameComplete( Bool bWasSuccessful );
		Bool CreateOnlineGame( Byte HostingPlayerNum, OnlineGameSettings* NewGameSettings );
		OnlineGameSearch* GetGameSearch();
		OnlineGameSettings* GetGameSettings();
		Byte GetOnlineGameState();
		void OnFindOnlineGamesComplete( Bool bWasSuccessful );
	};

	class TcpipConnection: public NetConnection
	{
		DECLARE_PACKAGE_CLASS( TcpipConnection, NetConnection, IpDrv )

	public:
	};

	class TcpNetDriver: public NetDriver
	{
		DECLARE_PACKAGE_CLASS( TcpNetDriver, NetDriver, IpDrv )

	public:

		Bool LogPortUnreach: 1; //offset = 316, size = 4
		Bool AllowPlayerPortUnreach: 1; //offset = 312, size = 4
	};
}

#endif
